home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / R-Shows / (c)sdg.d64 / character editor (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  10KB  |  375 lines

  1. 5 REM   CUSTOM CHARACTER EDITOR
  2. 6 REM            FROM
  3. 7 REM COMPUTE!'S BOOK OF GRAPHICS
  4. 8 REM    KEYED IN BY JOHN MOORE
  5. 9 REM          1983 12 15
  6. 10 REM ** CHANGE SCREEN POINTERS **
  7. 20 PRINT CHR$(8);
  8. 30 POKE 56578,PEEK(56578)OR3
  9. 40 POKE 56576,(PEEK(56576)AND252)OR0
  10. 50 POKE53272,(PEEK(53272)AND240)OR2
  11. 60 POKE648,196:FF=0
  12. 70 REM
  13. 80 REM ** TRANSFER CHARACTER SET **
  14. 90 REM
  15. 100 POKE 56334,PEEK(56334)AND254
  16. 110 POKE 1,PEEK(1)AND251
  17. 120 FOR R=53248 TO 55296
  18. 130 POKER-2048,PEEK(R):NEXT
  19. 140 POKE1,PEEK(1)OR4
  20. 150 POKE56334,PEEK(56334)OR1
  21. 160 REM
  22. 170 REM ** DEFINE CHARACTER GRID **
  23. 175 LZ$(0)="[207]":LZ$(1)=" [146]"
  24. 180 REM
  25. 190 CG$=""
  26. 195 CF$=""
  27. 200 FOR R=0 TO 7
  28. 210 CG$=CG$+"[207][207][207][207][207][207][207][207][165][157][157][157][157][157][157][157][157][157]"
  29. 215 CF$=CF$+"        [146][165][157][157][157][157][157][157][157][157][157]":NEXT
  30. 220 CG$ = CG$+"[163][163][163][163][163][163][163][163]"
  31. 230 REM
  32. 240 REM DEFINE CHARACTER DISPLAY
  33. 250 REM
  34. 260 CD$="@ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  35. 270 CD$=CD$+"\^_ !"+CHR$(34)
  36. 280 CD$=CD$+"#$%&'()*+,-./"
  37. 290 CD$=CD$+"0123456789:;<=>?[192][193][194][195][196]"
  38. 300 CD$=CD$+"[218][219][220][221][255][223] [161][162][163][164][165][166][167][168][170][171][172][173][174]"
  39. 310 CD$=CD$+"[197][198][199][200][201][202][203][204][205][206][207][208][209][210][211][212][213][214][215][216][217]"
  40. 320 CD$=CD$+"[175][176][177][178][179][180][181][182][183][184][185][186][187][188][189][190][191]"
  41. 330 REM
  42. 340 REM ** DEFINE FUNCTION KEYS **
  43. 350 REM
  44. 351 FOR R=1TO30:S$=S$+"":NEXT
  45. 360 FORN=1TO8 STEP 2
  46. 370 K$(N)="[162][162][162][162][162][157][157][157][157][157] F"+STR$(N)+" [157][157][157][157][157][157][157][146][167][162][162][162][162][162][146] [165]"
  47. 380 K$(N+1)="[167][169] F"+STR$(N+1)+" [223][146][165]"
  48. 390 P$(N)="[176][192][192][192][174][157][157][157][157][157][194]F"+STR$(N)+"[194][157][157][157][157][157][157][157][146][167] [173][192][192][192][189][146] [165]"
  49. 400 P$(N+1)="[167][206] F"+STR$(N+1)+" [205][146][165][157][157][157][157][157][157][157][157][157][148][148][163][163][163][163][163][145]":NEXT
  50. 405 REM
  51. 410 REM ** DEFINE KEY POSITIONS **
  52. 415 REM
  53. 420 FOR R=1TO8:K$(R)=""+K$(R):NEXT
  54. 430 FORR=1TO7STEP2:K$(R)=""+SP$+K$(R):SP$=SP$+"":NEXT
  55. 440 SP$="":FORR=2TO8STEP2:K$(R)=""+SP$+K$(R):SP$=SP$+"":NEXT:SP$=""
  56. 450 FORR=1TO8:P$(R)=""+P$(R):NEXT
  57. 460 FORR=1TO7STEP2:P$(R)=""+SP$+P$(R):SP$=SP$+"":NEXT
  58. 470 SP$="":FORR=2TO8STEP2:P$(R)=""+SP$+P$(R):SP$=SP$+"":NEXT
  59. 480 REM
  60. 490 REM ** DEFINE MESSAGES **
  61. 500 REM
  62. 510 M$(1)="EDIT....[157][157][157][157][157][157][157][157]SAVE....[157][157][157][157][157][157][157][157]"
  63. 520 M$(1)=M$(1)+"LOAD....[157][157][157][157][157][157][157][157]COPY....[157][157][157][157][157][157][157][157]CLEAR...[157][157][157][157][157][157][157][157]"
  64. 530 M$(1)=M$(1)+"FILL....[157][157][157][157][157][157][157][157]WORK....[157][157][157][157][157][157][157][157]FUNCTION"
  65. 540 M$(2)="REVERSE.[157][157][157][157][157][157][157][157]INVERT..[157][157][157][157][157][157][157][157]"
  66. 550 M$(2)=M$(2)+"FLIP....[157][157][157][157][157][157][157][157]SCROLL R[157][157][157][157][157][157][157][157]SCROLL L[157][157][157][157][157][157][157][157]"
  67. 560 M$(2)=M$(2)+"SCROLL U[157][157][157][157][157][157][157][157]SCROLL D[157][157][157][157][157][157][157][157]FUNCTION"
  68. 570 REM
  69. 580 REM ** DEFINE RULER LINES **
  70. 590 REM
  71. 600 L$="[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
  72. 610 L$=L$+"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][178][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
  73. 620 L$=L$+"[221][157][221][157][221][157][221][157][221][157][221][157][221][157][221][157][221][157][221][157][221][157][221][157][221][157][221]"
  74. 630 L$=L$+"[157][221][157][221][157][221][157][221][145][145][145][145][145][145][145][145][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
  75. 900 REM
  76. 910 REM ** DISPLAY EDIT SCREEN **
  77. 920 REM
  78. 930 PRINT"[147]";CD$:PRINTCG$:PRINTL$:PRINTM$(1)
  79. 940 REM
  80. 941 REM ** EDIT CHARACTERS **
  81. 942 REM
  82. 945 A$="@"
  83. 1000 REM
  84. 1010 REM ** DISPLAY FUNCTION KEYS **
  85. 1020 REM
  86. 1025 POKE 55753,14
  87. 1030 PRINT"";:FOR R=1TO8:PRINTK$(R);:NEXT:PRINT"";
  88. 1040 A(0)=1:A(1)=3:A(2)=5:A(3)=7:A(4)=2:A(5)=4:A(6)=6:A(7)=8
  89. 1045 GOTO1087
  90. 1050 REM
  91. 1060 REM ** GET KEYBOARD ENTRY **
  92. 1070 REM
  93. 1080 PRINT"ENTER FUNCTION:                       "
  94. 1082 GETA$:IFA$=""THEN1080
  95. 1084 REM
  96. 1085 REM  -- SKIP INVALID KEYS --
  97. 1086 REM
  98. 1087 VA=ASC(A$)
  99. 1088 IF (VA<32 OR VA>223)THEN1080
  100. 1089 IF (VA>95 AND VA<133)THEN1080
  101. 1090 IF (VA>140 AND VA<161)THEN1080
  102. 1091 IF (VA>140 OR VA<132)THEN1205
  103. 1100 REM
  104. 1110 REM -- GET FUNCTION KEYS --
  105. 1120 REM
  106. 1130 PRINTP$(A(ASC(A$)-133))
  107. 1140 FOR R=0TO99:NEXT
  108. 1150 PRINTK$(A(ASC(A$)-133));"";
  109. 1160 GOTO 1390
  110. 1180 REM
  111. 1190 REM -- CONVERT TO SCREEN CODE --
  112. 1200 REM
  113. 1205 LT=VA
  114. 1210 IF VA>31 AND VA<64 THEN SC=VA:GOTO1240
  115. 1220 IF VA>63 AND VA<193 THEN SC=VA-64: GOTO 1240
  116. 1230 IF VA>191 AND VA<224 THEN SC=VA-128: GOTO1240
  117. 1240 REM
  118. 1250 REM -- DISPLAY EDITED CHARACTER --
  119. 1260 REM
  120. 1262 LT$=STR$(LT):LT$=RIGHT$(LT$,LEN(LT$)-1)
  121. 1265 PRINT"ENTRY MODE: CHR$(";LT$;")                 "
  122. 1270 POKE50633,SC
  123. 1273 PRINT"";
  124. 1275 PRINT"ENTRY MODE: CHR$(";LT$;")                 "
  125. 1276 POKE 50633,SC
  126. 1277 PRINT"";
  127. 1278 FOR R=0 TO7
  128. 1279 RR=PEEK(R+(51200+8*SC))
  129. 1280 PRINTLZ$(ABS((RRAND128)=128));LZ$(ABS((RRAND64)=64));LZ$(ABS((RRAND32)=32));
  130. 1281 PRINTLZ$(ABS((RRAND16)=16));LZ$(ABS((RRAND8)=8));LZ$(ABS((RRAND4)=4));
  131. 1282 PRINTLZ$(ABS((RRAND2)=2));LZ$(ABS((RRAND1)=1));"[157][157][157][157][157][157][157][157]";:NEXT:GOTO 1080
  132. 1350 GOTO 1080
  133. 1360 REM
  134. 1370 REM -- SPECIAL FUNCTION ROUTINES --
  135. 1380 REM
  136. 1390 IF FF=1 THEN 1500
  137. 1400 ON A(ASC(A$)-133) GOTO 2005,1433,1443,1453,1462,1472,1483,1493
  138. 1410 GOTO 1170
  139. 1430 REM
  140. 1431 REM -- SAVE A CHARACTER SET --
  141. 1432 REM
  142. 1433 PRINT"SAVE ON CASSETTE OR DISK? (C/D):      "
  143. 1434 GET Q$:IFQ$=""THEN1434
  144. 1435 IF Q$<>"C" AND Q$<>"D" THEN 1087
  145. 1436 GOTO 1760
  146. 1440 REM
  147. 1441 REM -- LOAD A CHARACTER SET --
  148. 1442 REM
  149. 1443 PRINT"LOAD FROM CASSETE OR DISK? (C/D):    "
  150. 1444 GET Q$: IF Q$=""THEN 1444
  151. 1445 IF Q$<>"C" AND Q$<>"D" THEN 1087
  152. 1446 GOTO 1910
  153. 1450 REM
  154. 1451 REM -- (null) A CHARACTER --
  155. 1452 REM
  156. 1453 PRINT"ENTER CHARACTER TO COPY:              "
  157. 1454 GET CA$:IF CA$="" THEN 1454
  158. 1455 GOTO 1605
  159. 1456 IF CA$="" THEN 1454
  160. 1459 GOTO 1275
  161. 1460 REM
  162. 1461 REM -- CLEAR A CHARACTER --
  163. 1462 PRINT"CLEAR CHAR: CHR$(";LT$;")                 "
  164. 1463 H=51200+8*SC
  165. 1464 FOR R=H TO H+7: POKE R,0:NEXT
  166. 1465 PRINTCG$:GOTO 1080
  167. 1470 REM
  168. 1471 REM -- FILL A CHARACTER --
  169. 1472 PRINT"FILL  CHAR: CHR$(";LT$;")                  "
  170. 1473 H=51200+8*SC
  171. 1474 FOR R=H TO H+7: POKE R,255: NEXT
  172. 1475 PRINT CF$:GOTO 1080
  173. 1480 REM
  174. 1481 REM -- GOTO WORK SPACE --
  175. 1482 REM
  176. 1483 PRINT"ENABLE WORK SPACE                      "
  177. 1484 GOTO 2705
  178. 1490 REM
  179. 1491 REM -- SWITCH FUNCTION SET --
  180. 1492 REM
  181. 1493 FF=1:PRINTM$(2):GOTO 1080
  182. 1499 RETURN
  183. 1500 ON A(ASC(A$)-133)GOTO 1523,1532,1542,1551,1561,1572,1582,1593
  184. 1510 GOTO 1170
  185. 1520 REM
  186. 1521 REM -- REVERSE CHARACTER BITS --
  187. 1522 REM
  188. 1523 PRINT"REVERSE CHARACTER:                    "
  189. 1524 H=51200+8*SC
  190. 1525 FOR R=H TO H+7:POKE R,255-PEEK(R):NEXT
  191. 1529 GOTO 1275
  192. 1530 REM
  193. 1531 REM -- INVERT CHARACTER SET --
  194. 1532 PRINT"INVERTING CHARACTER:                  "
  195. 1533 H=51200+8*SC
  196. 1534 FOR R=H TO H+7: T(R-H)=PEEK(R):NEXT
  197. 1535 FOR R=H TO H+7: POKE R,T(7-(R-H)):NEXT:GOTO1275
  198. 1540 REM
  199. 1541 REM -- FLIP CHARACTERS --
  200. 1542 PRINT"FLIPPING CHARACTER:                   "
  201. 1543 FOR U=51200+8*SC TO (51200+8*SC)+7
  202. 1544 Z=PEEK(U)
  203. 1545 R=128*(ABS((ZAND1)=1))+64*(ABS((ZAND2)=2))+32*(ABS((ZAND4)=4))
  204. 1546 R=R+16*(ABS((ZAND8)=8))+8*(ABS((ZAND16)=16))+4*(ABS((ZAND32)=32))
  205. 1547 R=R+2*(ABS((ZAND64)=64))+1*(ABS((ZAND128)=128))
  206. 1548 POKE U,R
  207. 1549 NEXT:GOTO1275
  208. 1550 REM -- SCROLL RIGHT --
  209. 1551 PRINT"SCROLLING RIGHT:                      "
  210. 1552 FOR U=51200+8*SC TO (51200+8*SC)+7
  211. 1553 R=(PEEK(U)/2)
  212. 1554 IF PEEK(U)/2<>INT(PEEK(U)/2) THEN R=R+128
  213. 1555 POKE U,R
  214. 1556 NEXT:GOTO1275
  215. 1560 REM -- SCROLL LEFT --
  216. 1561 PRINT"SCROLLING LEFT:                       "
  217. 1562 FOR U=51200+8*SC TO (51200+8*SC)+7
  218. 1563 R=PEEK(U)*2)
  219. 1564 IF PEEK(U)=>128 THEN R=R+1
  220. 1565 IF R>255 THEN R=R-256
  221. 1566 POKE U,R
  222. 1567 NEXT:GOTO1275
  223. 1570 REM
  224. 1571 REM -- SCROLL UP --
  225. 1572 PRINT"SCROLLING UP:                         "
  226. 1573 FOR R=0TO7
  227. 1574 Y(R)=PEEK(R+51200+8*SC):NEXT
  228. 1575 FOR R=0TO6
  229. 1576 POKE R+51200+8*SC, Y(R+1):NEXT
  230. 1577 POKE 51207+8*SC, Y(0)
  231. 1578 GOTO 1275
  232. 1580 REM
  233. 1581 REM -- SCROLL  DOWN --
  234. 1582 PRINT"SCROLLING DOWN:                       "
  235. 1583 FOR R=0TO7
  236. 1584 Y(R)=PEEK(R+51200+8*SC):NEXT
  237. 1585 FOR R=1TO7
  238. 1586 POKE R+51200+8*SC, Y(R-1):NEXT
  239. 1587 POKE 51200+8*SC, Y(7)
  240. 1589 GOTO 1275
  241. 1590 REM
  242. 1591 REM -- SWITCH FUNCTION SET --
  243. 1592 REM
  244. 1593 FF=0:PRINTM$(1):GOTO1080
  245. 1599 RETURN
  246. 1600 REM
  247. 1601 REM  ** (null) CHARACTER ROUTINE **
  248. 1602 REM
  249. 1605 DA=ASC(CA$)
  250. 1610 IF (DA<32 OR DA>223) THEN 1456
  251. 1620 IF (DA>95 AND DA<133) THEN 1456
  252. 1630 IF (DA<141 AND DA>132) THEN A$=CA$:GOTO 1080
  253. 1640 IF (DA>140 AND DA<161) THEN RETURN
  254. 1650 PRINT"";CA$
  255. 1660 IF DA>31 AND DA<64 THEN SD=DA: GOTO 1690
  256. 1670 IF DA>63 AND DA<193 THEN SD=DA-64: GOTO 1690
  257. 1680 IF DA>191 AND DA<224 THEN SD=DA-128: GOTO 1690
  258. 1690 VJ=51200+8*SD:JJ=51200+8*SC
  259. 1700 FOR R=0TO7
  260. 1710 POKE JJ+R,PEEK(VJ+R):NEXT
  261. 1720 GOTO 1456
  262. 1730 REM
  263. 1740 REM ** SAVE CHAR SET ROUTINE **
  264. 1750 REM
  265. 1760 PRINT"SAVE:FILE NAME ------.CHR        ";
  266. 1770 LL=0:NM$=""
  267. 1775 FOR R=0TO30:PRINT"-[146][157]";
  268. 1780 GET A$:IFA$=""THEN NEXT
  269. 1790 IFA$<>""THEN 1840
  270. 1800 FOR R=0 TO 30:PRINT"-[157]";
  271. 1810 GET A$:IF A$=""THEN NEXT
  272. 1820 IF A$<>"" THEN 1840
  273. 1830 GOTO 1775
  274. 1840 IFA$=CHR$(20)ORA$=CHR$(148)ORA$=CHR$(13) OR A$=CHR$(34) OR A$="[145]"THEN1775
  275. 1845 IFA$="" OR A$="" OR A$="[157]" THEN 1775
  276. 1847 IF ASC(A$)>132 AND ASC(A$)<141 THEN 1080
  277. 1850 PRINT A$;
  278. 1855 NM$=NM$+A$:LL=LL+1:IF LL=6 THEN 1870
  279. 1860 GOTO 1775
  280. 1870 NM$=NM$+".CHR"
  281. 1875 IF Q$="C"THEN1890
  282. 1880 OPEN1,8,4,NM$+",W"
  283. 1885 FOR R=51200 TO 52224
  284. 1887 PRINT#1,PEEK(R):NEXT
  285. 1889 CLOSE1:GOTO1275
  286. 1890 OPEN1,1,1,NM$:GOTO1885
  287. 1900 REM
  288. 1901 REM ** SAVE CHAR SET ROUTINE **
  289. 1902 REM
  290. 1910 PRINT"LOAD: FILE NAME ------.CHR        ";
  291. 1915 LL=0:NM$=""
  292. 1920 FOR R=0TO30: PRINT"-[146][157]";
  293. 1925 GET A$:IFA$=""THEN NEXT
  294. 1930 IFA$<>""THEN 1955
  295. 1935 FOR R=0TO30: PRINT"-[157]";
  296. 1940 GET A$:IFA$=""THEN NEXT
  297. 1945 IFA$<>""THEN 1955
  298. 1950 GOTO 1920
  299. 1955 IFA$=CHR$(20)ORA$=CHR$(148)ORA$=CHR$(13)ORA$=CHR$(34)ORA$="[145]"THEN 1920
  300. 1960 IFA$=""ORA$=""ORA$="[157]"THEN 1920
  301. 1965 IF ASC(A$)>132 AND ASC(A$)<141 THEN 1080
  302. 1970 PRINTA$;
  303. 1975 NM$=NM$+A$:LL=LL+1:IFLL=6THEN1980
  304. 1976 GOTO1920
  305. 1980 NM$=NM$+".CHR"
  306. 1985 IF Q$="C"THEN 1999
  307. 1987 OPEN1,8,4,NM$+",R"
  308. 1988 FOR R=51200 TO 52224
  309. 1989 INPUT#1,VL:POKE R,VL:NEXT
  310. 1990 CLOSE1:GOTO 1275
  311. 1999 OPEN1,1,1,NM$:GOTO 1885
  312. 2000 REM
  313. 2001 REM ** CHARACTER EDIT ROUTINE **
  314. 2002 REM
  315. 2005 PRINT"EDIT  MODE: CHR$(";LT$;")                 "
  316. 2010 PRINT"";
  317. 2015 LO=50462: SV=PEEK(LO) :SM=(51200+(8*SC)): EX=7 :GT=SC
  318. 2020 FOR R=0TO30:POKE LO,SV
  319. 2030 GET A$:IFA$=""THEN NEXT
  320. 2040 IFA$<>""THEN 2090
  321. 2050 FOR R=0TO30: POKE LO,102
  322. 2060 GET A$: IFA$=""THEN NEXT
  323. 2070 IFA$<>""THEN 2090
  324. 2080 GOTO 2020
  325. 2090 IFA$="[145]"THEN 2200
  326. 2091 IFA$=""THEN 2100
  327. 2092 IFA$="[157]"THEN 2300
  328. 2093 IFA$=""THEN 2400
  329. 2094 IF A$=CHR$(32) AND SV=160 THEN 2500
  330. 2095 IF A$=CHR$(32) AND SV=79 THEN 2600
  331. 2099 POKE LO,SV:GOTO 1087
  332. 2100 POKE LO,102:FOR R=0TO40: NEXT
  333. 2110 IF GT=SC+7 THEN 2020
  334. 2120 POKE LO,SV:LO=LO+40:GT=GT+1:SV=PEEK (LO):SM=SM+1:GOTO2020
  335. 2200 POKE LO,102:FOR R=0TO40:NEXT
  336. 2210 IF GT=SC THEN 2020
  337. 2220 POKELO,SV:LO=LO-40:GT=GT-1:SV=PEEK(LO):SM=SM-1:GOTO 2020
  338. 2300 POKE LO,102:FOR R=0TO40:NEXT
  339. 2310 IF EX=7 THEN 2020
  340. 2320 POKE LO,SV: LO=LO-1:EX=EX+1:SV=PEEK(LO):GOTO2020
  341. 2400 POKE LO,102:FOR R=0TO40: NEXT
  342. 2410 IF EX=0 THEN 2020
  343. 2420 POKE LO,SV:LO=LO+1:EX=EX-1:SV=PEEK(LO):GOTO 2020
  344. 2500 POKE LO,79:POKE SM,PEEK(SM)-(2^EX):SV=79:GOTO 2020
  345. 2600 POKE LO,160:POKE SM,PEEK(SM)+(2^EX):SV=160:GOTO2020
  346. 2700 REM
  347. 2701 REM ** WORK SPACE ROUTINE **
  348. 2702 REM
  349. 2705 HZ=0:LZ=0
  350. 2710 PRINT"";
  351. 2720 FOR R=0TO30:PRINT" [146][157]";
  352. 2730 GET A$:IF A$=""THEN NEXT
  353. 2740 IFA$<>""THEN2790
  354. 2750 FOR R=0TO30: PRINT" [157]";
  355. 2760 GET A$:IFA$=""THEN NEXT
  356. 2770 IFA$<>""THEN 2790
  357. 2780 GOTO 2720
  358. 2790 IFA$=CHR$(20)ORA$=CHR$(148)ORA$=CHR$(13)ORA$=CHR$(34)THEN2720
  359. 2810 IF ASC(A$)>132 AND ASC(A$)<141 THEN PRINT" ";:GOTO 1087
  360. 2820 IFA$="[145]" THEN 3200
  361. 2830 IFA$="" THEN 3100
  362. 2840 IFA$="[157]" THEN 3300
  363. 2850 IFA$="" THEN 3400
  364. 2860 IF HZ<18 AND LZ<6 THEN PRINTA$;:HZ=HZ+1:GOTO2720
  365. 2870 IF HZ=18 AND LZ<6 THEN 2720
  366. 2880 IF HZ=18 AND LZ=6 THEN 2720
  367. 3100 IF LZ=6 THEN 2720
  368. 3110 PRINT" [157]";:LZ=LZ+1:GOTO2720
  369. 3200 IF LZ=0 THEN 2720
  370. 3210 PRINT" [157][145]";:LZ=LZ-1:GOTO2720
  371. 3300 IF HZ=0 THEN 2720
  372. 3310 PRINT" [157][157]";:HZ=HZ-1:GOTO 2720
  373. 3400 IF HZ=18 THEN 2720
  374. 3410 PRINT" [157]";:HZ=HZ+1:GOTO 2720
  375.